// 云函数入口文件
const cloud = require('wx-server-sdk')
const crypto = require('crypto')

cloud.init({ env: 'cloud1-2ga6780q302b7f4a' }) // 指定云环境ID
const db = cloud.database()

// 生成简单的 token
function generateToken(adminId, timestamp) {
  const data = `${adminId}-${timestamp}-${process.env.ADMIN_SECRET || 'outdoor_equipment_admin'}`
  return crypto.createHash('md5').update(data).digest('hex')
}

// 云函数入口函数
exports.main = async (event, context) => {
  const { username, password } = event
  
  // 添加参数日志，方便调试
  console.log('登录请求参数:', { username });
  
  try {
    // 检查参数
    if (!username || !password) {
      return {
        code: -1,
        data: null,
        message: '用户名和密码不能为空'
      }
    }
    
    // 1. 查询管理员表
    const { data: admins } = await db.collection('admins').where({
      username: username
    }).get()
    
    console.log('查询结果:', admins);
    
    // 管理员不存在
    if (admins.length === 0) {
      return {
        code: -1,
        data: null,
        message: '用户名或密码错误'
      }
    }
    
    const admin = admins[0]
    
    // 2. 验证密码（使用MD5加密比对）
    // 将输入的密码进行MD5加密
    const passwordHash = crypto.createHash('md5').update(password).digest('hex')
    
    if (passwordHash !== admin.password) {
      return {
        code: -1,
        data: null,
        message: '用户名或密码错误'
      }
    }
    
    // 3. 生成登录令牌
    const timestamp = Date.now()
    const token = generateToken(admin._id, timestamp)
    
    // 4. 更新管理员最后登录时间
    await db.collection('admins').doc(admin._id).update({
      data: {
        lastLoginTime: db.serverDate(),
        token: token,
        tokenExpireTime: new Date(timestamp + 24 * 60 * 60 * 1000) // 过期时间设为24小时
      }
    })
    
    // 5. 返回管理员信息（去除敏感信息）
    const resultData = {
      adminId: admin._id,
      username: admin.username,
      role: admin.role,
      token: token,
      expireTime: timestamp + 24 * 60 * 60 * 1000
    };
    
    console.log('登录成功，返回数据:', { adminId: resultData.adminId, username: resultData.username });
    
    return {
      code: 0,
      data: resultData,
      message: '登录成功'
    }
  } catch (err) {
    console.error('登录出错:', err);
    return {
      code: -1,
      data: null,
      message: '登录失败: ' + err.message
    }
  }
} 